﻿using System;
using Iot.Shared.Path;
using Mediator;

namespace Iot.Shared.Model;

/// <summary>
///     数据模型基础数据
/// </summary>
public abstract record BusModel(DevicePath Path) : INotification
{
    /// 消息根目录(项目名称)
    /// 设备类型 （输入输出采集卡  模块  UPS  电池巡检仪）
    /// 设备地址(address或区分)
    /// 具体消息类型(通讯故障(告警类型)、模拟量、开关量、自定义类型)
    /// 寄存器地址
    /// <summary>
    ///     设备路径
    /// </summary>
    public DevicePath Path { get; } = Path;

    /// <summary>
    ///     数据时间
    /// </summary>
    public DateTimeOffset TimeStamp { get; set; }
}

/// <summary>
///     消息总线数据模型
/// </summary>
/// <typeparam name="T">消息值</typeparam>
public abstract record BusModel<T>(DevicePath Path, T Value) : BusModel(Path)
{
    /// <summary>
    ///     消息值
    /// </summary>
    public T Value { get; } = Value;
}